package April.april28;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/*
反射获取成员方法并运行
    pubic void eat(){}
 */
public class ReflectDemo_6 {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
        Class c = Class.forName("April.april28.Person");
        Object obj = c.newInstance();
//        获取class对象的成员方法
//        Method[] getMethods() 获取的是class文件中的所有公共方法，包括继承的
//        Method类是描述成员方法的对象
        Method[] methods = c.getMethods();
        for (Method m : methods){
            System.out.println(m);
        }

//        获取指定的方法eat运行
//        Method getMethod(String methodName,Class...c)
//        methodName获取方法名 c 方法参数列表
        Method method = c.getMethod("eat");
//        使用Method类中的方法，运行获取到的方法eat
//        Object invoke(Object obj,Object...o)
        Object o =method.invoke(obj);
        System.out.println(o);
    }
}
